#!/bin/sh

#========================| VAR
export pkgext='tpkg' # extenção do pacote

#========================| FUNC
check_pkg() {
    pkg_name="$@"

    # Verificando a extenção do pacote.
    if ! echo "$pkg_name" | grep "\b${pkgext}\b$"; then
        printf '%s\n' "O formato do pacote deve ser: ${pkgext}"
        return 1    
    fi

    # Verificando se tem espaços no nome do pacote.
    if  echo "$pkg_name" | grep -qE "[[:space:]]+"; then
        printf '%s\n' "Não utilize ESPAÇOS no nome do pacote."
        printf '%s\n' "Abortando a criação do pacote."
        return 1
    fi

    # Verificando quantos traços existem.
    # traço (-) e um delimitador, precisa ter 2
    # formato: nomedopacote-versão-build.tpkg
    verify=$(echo "${pkg_name}" | grep -o "-" | wc -l)
    if [ "$verify" -lt '2' ] || [ "$verify" -qt '2' ]; then
        printf '%s\n' "Erro... O formato do pacote deve ser o seuinte:"
        printf '%s\n' "NomeDoPacote-Versão-Build.${pkgext}"
        return 1
    fi
    
    return 0
}

# Criação do pacote
create_pkg() {
    pkg_name="$1" # recebendo nome do pacote

    if  tar -cvf ../${pkg_name} .; then
        printf '%s\n' "O pacote foi criado em ../${pkg_name}"
        return 0
    else
        printf '%s\n' "O pacote ${pkg_name} não foi criado..."
        exit 1
    fi

    return 0
}

#========================| INICIO
case "$1" in
    create|-c)
        shift # Pegando o proximo agumento
        # Sem nome de pacote sai
        if [ -z "$1" ]; then
            printf '%b\n' "Voce precisa fornecer un nome do pacote."
            exit 1
        fi
        check_pkg "$@" || exit 1 # Checagem do pacote.
        create_pkg "$@" # Chamando função para criar o pacote
    ;;
esac 
